home *** CD-ROM | disk | FTP | other *** search
File List | 1996-09-18 | 4.5 KB | 203 lines |
- $m20480
- vers$=" ScrSav_H.GFA,Pfr.S.Just,6936 Haag,TT_Mono:1280*960,GFABasic3.5E "
- '
- @init
- blink_version!=TRUE
- @schleife
- '
- PROCEDURE schleife
- IF ap_id&=als_prog& THEN
- DO
- ~EVNT_TIMER(warte_sek%)
- @abfrage
- EXIT IF abbruch!
- LOOP
- END
- ELSE ! Accessory
- IF NOT geht! THEN
- DO
- ~EVNT_TIMER(-1)
- LOOP
- ELSE
- PRINT
- PRINT " *** ScrnSave-Accessory für TT-High-Monochrom v.Pfr.S.Just,Haag, GFABasic 3.5E, Blinkend ***"
- me_id&=MENU_REGISTER(ap_id&," ScrnSave 1280*960 ")
- DO
- rueck&=EVNT_MULTI(&X110000,0,0,0,0,0,0,0,0,0,0,0,0,0,buffer%,warte_sek%,mx&,my&,button&,kstate&,key&,geklickt&)
- IF rueck&=&X100000 THEN ! Timer
- @abfrage
- ELSE
- IF buff&(1)=ac_open& THEN
- @parameter
- ENDIF
- ENDIF
- LOOP
- ENDIF
- ' Kein END
- ENDIF
- RETURN ! schleife
- '
- PROCEDURE init
- ap_id&=APPL_INIT()
- als_prog&=0
- debug!=(ap_id&=als_prog&)
- geht!=(WORK_OUT(0)=1279) AND (WORK_OUT(1)=959)
- t_puf_tab_adr%=XBIOS(14,1)
- t_puf_adr%={t_puf_tab_adr%}
- t_puf_len%=INT{t_puf_tab_adr%+4}
- DIM buff&(16)
- buffer%=V:buff&(1)
- ac_open&=40
- DATA 20,6F,00,04,20,2F,00,08,46,98,51,C8,FF,FC,4E,75
- INLINE invert%,16
- IF debug! THEN
- FOR i%=0 TO 15
- READ h$
- BYTE{invert%+i%}=VAL("&h"+h$)
- NEXT i%
- ENDIF
- DATA 20,6F,00,04,20,2F,00,08,22,3C,FF,FF,FF,FF,20,C1
- DATA 51,C8,FF,FC,4E,75
- INLINE dark_l%,22
- IF debug! THEN
- FOR i%=0 TO 21
- READ h$
- BYTE{dark_l%+i%}=VAL("&H"+h$)
- NEXT i%
- ENDIF
- INLINE men_buf%,3072
- men_bytes%=MIN(19*160,3072)
- neu$=STRING$(t_puf_len%,CHR$(0))
- old$=STRING$(t_puf_len%,CHR$(0))
- mx%=0
- my%=0
- old_mx%=mx%
- old_my%=my%
- tm%=0
- t%=0
- invers!=FALSE
- abbruch!=FALSE
- cltoeol$=CHR$(27)+"K"
- inv$=CHR$(27)+"p"
- norm$=CHR$(27)+"q"
- ' msec fuer das Warten
- IF debug! THEN
- warte_sek%=5*1000
- ELSE
- warte_sek%=60*1000
- ENDIF
- ' 1/200 sec fuer das Blinken
- blink_f%=3*200
- RETURN ! init
- '
- PROCEDURE parameter
- LOCAL w$,w%
- @rette_menu
- PRINT AT(1,1);cltoeol$;inv$;vers$;" Bisherige Zeitspanne: ";warte_sek% DIV 1000;" sec, Neuer Wert: ";
- INPUT "",w$
- w%=VAL(w$)
- IF w%>0 THEN
- warte_sek%=w%*1000
- ENDIF
- PRINT AT(1,1);cltoeol$;inv$;" Bisheriger Modus: ";
- IF blink_version! THEN
- PRINT "Periodische Bildschirm-Invertierung";
- ELSE
- PRINT "Dunkelschaltung";
- ENDIF
- PRINT " Neuer Modus: B-linkend D-unkel ";norm$;
- IF UPPER$(INPUT$(1))="D" THEN
- blink_version!=FALSE
- ELSE
- blink_version!=TRUE
- ENDIF
- @restore_menu
- RETURN ! parameter
- '
- PROCEDURE abfrage
- mx%=MOUSEX
- my%=MOUSEY
- x!=(ABS(SUB(mx%,old_mx%))<8) ! Damit nicht bei jedem
- y!=(ABS(SUB(my%,old_my%))<16)! kleinen Stoss
- t!=@tbuf_gleich
- IF debug! THEN
- PRINT "x!=";x!;" y!=";y!;" t!=";t!
- ENDIF
- IF x! AND y! AND t! THEN
- IF debug! THEN
- PRINT " Aktiviert!"
- ENDIF
- tm%=LPEEK(&H4BA)
- t%=0
- mk%=0
- old_mx%=mx%
- old_my%=my%
- invers!=FALSE
- {XBIOS(14,1)+6}=0 ! Tastaturpuffer 'Loeschen'
- IF NOT blink_version! THEN
- HIDEM ! Sonst Maus-'Fleck'!
- @rette_menu
- @clr_scrn
- ENDIF
- REPEAT
- t%=GEMDOS(6,&HFF) ! Notwendig zum Abbruch in der PRG-Version!
- t!=(t%>0)
- mx%=MOUSEX
- x!=(ABS(SUB(mx%,old_mx%))>8)
- my%=MOUSEY
- y!=(ABS(SUB(my%,old_my%))>16)
- IF blink_version! THEN
- IF (SUB(LPEEK(&H4BA),tm%) MOD blink_f%)=0 THEN
- @invert
- ENDIF
- ENDIF
- UNTIL t! OR x! OR y!
- IF (t% AND &HFF)=ASC("X") THEN
- abbruch!=TRUE
- ENDIF
- IF blink_version! THEN
- IF invers! THEN ! Bildschirm in der invertierten Form
- @invert ! 'erwischt'?
- ENDIF
- ELSE
- @restore_menu ! Macht FORM_DIAL nicht!
- ~FORM_DIAL(3,0,0,0,0,0,19,1280,960)
- SHOWM
- ENDIF
- ENDIF
- IF debug! THEN
- PRINT " De-Aktiviert"
- ENDIF
- old_mx%=mx%
- old_my%=my%
- old$=neu$
- t_puf_adr%={XBIOS(14,1)}
- RETURN ! abfrage
- '
- PROCEDURE rette_menu
- BMOVE XBIOS(2),men_buf%,men_bytes%
- RETURN ! rette_menu
- PROCEDURE restore_menu
- BMOVE men_buf%,XBIOS(2),men_bytes%
- RETURN ! rette_menu
- '
- FUNCTION tbuf_gleich
- BMOVE t_puf_adr%,V:neu$,t_puf_len%
- IF neu$=old$ THEN
- RETURN TRUE
- ELSE
- RETURN FALSE
- ENDIF
- ENDFUNC
- '
- PROCEDURE invert
- invers!=NOT invers!
- HIDEM
- ~C:invert%(L:XBIOS(2),L:153600 DIV 4)
- SHOWM
- RETURN ! invert
- PROCEDURE clr_scrn
- ~C:dark_l%(L:XBIOS(2),L:153600 DIV 4)
- RETURN ! clr_scrn
- '
-